// 导入Express模块，用于构建web应用
const express = require('express');

// 创建一个Express路由器实例，用于定义API路由
const router = express.Router();

// 导入数据库连接池，用于执行SQL操作
const pool = require('../config/db'); 

// 导入express-async-handler，用于简化异步错误处理
const asyncHandler = require('express-async-handler');

// 添加商品到购物车的路由
router.post('/add', asyncHandler(async (req, res) => {
  // 从请求体中获取商品ID
  const { productId } = req.body;

  // 查询购物车中是否已存在该商品
  console.log("Executing query to check existing cart item with productId:", productId);
const [existingCartItem] = await pool.query('SELECT * FROM cart WHERE product_id = ?', [productId]);
console.log("Query result for existingCartItem:", existingCartItem);
  // 如果商品不在购物车中，则插入
  if (existingCartItem.length === 0) {
    await pool.query('INSERT INTO cart (product_id) VALUES (?)', [productId]);
    res.json({ message: '商品已成功添加到购物车', productId });
  } else {
    // 商品已存在，响应提示信息
    res.json({ message: '商品已在购物车中', productId });
  }
}));

// 获取购物车中所有商品的路由
router.get('/', asyncHandler(async (req, res) => {
  // 查询购物车表中的所有商品
  const [cartItems] = await pool.query('SELECT * FROM cart');
  
  // 将查询结果转换为仅包含product_id的数组并响应
  res.json({ message: '购物车商品列表', cart: cartItems.map(item => item.product_id) });
}));

// 从购物车中删除指定商品的路由
router.delete('/remove/:productId', asyncHandler(async (req, res) => {
  // 从URL参数中获取要删除的商品ID
  const productId = req.params.productId;

  // 检查购物车中是否存在该商品
  const [existingCartItem] = await pool.query('SELECT * FROM cart WHERE product_id = ?', [productId]);

  // 如果存在，则删除
  if (existingCartItem.length > 0) {
    await pool.query('DELETE FROM cart WHERE product_id = ?', [productId]);
    res.json({ message: '商品已从购物车中删除', productId });
  } else {
    // 商品不存在于购物车，响应提示信息
    res.json({ message: '购物车中不存在该商品', productId });
  }
}));

// 结算购物车的模拟操作
router.post('/checkout', asyncHandler(async (req, res) => {
  // 清空购物车表
  await pool.query('TRUNCATE TABLE cart');

  // 为了模拟，在清空后立即查询（实际上已被清空），这里应根据实际需求调整逻辑
  const [oldCartItems] = await pool.query('SELECT * FROM cart');

  // 响应购物车已结算的信息
  res.json({ message: '购物车已结算', cartItems: oldCartItems.map(item => item.product_id) });
}));

// 导出路由器供其他模块使用
module.exports = router;